// https://www.lintcode.com/problem/strobogrammatic-number/description
// 644. Strobogrammatic Number
// 一个镜像数字是指一个数字旋转180度以后和原来一样(倒着看)。
// 写下一个函数来判断是否这个数字是镜像的。数字用字符串来表示。

// 样例
// 例如，数字"69"，"88"，和"818"都是镜像数字。
// 给出数字 num = "69"
// 返回 true
// 给出数字 num = "68"
// 返回 false



// • 纯模拟：从左到右扫一遍，看对应的位置是不是反着的
// • 沟通清楚哪些数是对称的，比如“5”是不是对称的

class Solution {
public:
    /**
     * @param num: a string
     * @return: true if a number is strobogrammatic or false
     */
    bool isStrobogrammatic(string &num) {
        int len = num.length();
        for (int i = 0; i < len; i++)
        {
            // if (num[i] == '1' || num[i] == '3' || num[i] == '8')
            if (num[i] == '0' || num[i] == '1' || num[i] == '8')
            {
                if (num[len - 1 - i] != num[i])
                {
                    return false;
                }
            }
            else if (num[i] == '6')
            {
                if (num[len - 1 - i] != '9')
                {
                    return false;
                }
            }
            else if (num[i] == '9')
            {
                if (num[len - 1 - i] != '6')
                {
                    return false;
                }
            }
            else
            {
                return false;
            }
        }
        return true;
    }
};